package com.xiaoshuidi.cloud.module.iot.dal.model.callback;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 银通物联回调请求内容
 *
 * @author wael
 * @since 2022.11.7
 */
@Data
public class YinTongWuLianCallReqVO {
    /**
     * 数据类型
     * METER_READ 冷热水表、电表抄表结果推送
     * OPEN_CLOSE 冷热水表、电表阀控操作结果推送
     * EXCUTE_RESULT 指令执行结果回调 与上一个数据类型区别 ；一个表示设备状态推送，一个表示指令执行结果，建议同时使用
     * LOCK_BATTERY 门锁电量推送 （若定时任务获取获取到数据有延迟，该推送为实时数据）
     * DEV_ONLINE 设备在线状态变更，接口是仅当设备状态发生变更后，才会进行推送，可以作为定时任务的补充
     * LOCK_OPEN 门锁开锁记录推送 水滴可以通过接口实时获取，不关注该消息推送
     * LOCK_PWD_RESULT 密码下发结果推送 下发密码后，在规定时间内激活才可以使用该密码；当用户在规定时间内激活了密码或者到了规定时间仍没有激活密码，银通才会推送该消息
     * LOCK_WARNING_LOG 门锁告警记录推送 （银通建议 ：无需关注，展示接口提供数据即可(根据设备不同会有不同的告警类型，接入新设备会产生新的告警类型)。键盘锁定产生的原因，是因为多次密码输入错误导致，一段时间后会自动解锁。如针对告警记录没有额外业务，仅展示接口提供数据即可）
     */
    @Schema(description = "数据类型")
    private String dataType;

    /**
     * 房间唯一码 水滴可以不用关注该字段
     */
    @Schema(description = "房间唯一码")
    private String roomCode;

    /**
     * 安装地址 水滴可以不用关注该字段
     */
    @Schema(description = "安装地址")
    private String address;

    /**
     * 设备唯一码
     */
    @Schema(description = "设备唯一码")
    private String devSn;

    /**
     * 设备类型
     * 1冷水表，2电表，3门锁，4热水表
     */
    @Schema(description = "设备类型")
    private String devType;

    /**
     * 设备读数,除以 1000，表示吨或者度
     */
    @Schema(description = "设备读数")
    private String readValue;

    /**
     * 阀门状态  0开、1关
     */
    @Schema(description = "阀门状态")
    private String valveStatus;

    /**
     * 在离线状态 0-离线 1-在线
     */
    @Schema(description = "在离线状态")
    private String onlineStatus;

    /**
     * 告警状态 0-正常 1-本次读数小于上次读数
     */
    @Schema(description = "告警状态")
    private String alarmCode;

    /**
     * 采集时间，形如 2022-08-11 23:30:00 yyyy-MM-dd HH:mm:ss
     */
    @Schema(description = "采集时间")
    private String collectTime;

    /**
     * 请求结果中返回结果里面的uuid
     * 重要字段，在通断电，下发密码时会有返回
     */
    @Schema(description = "请求结果中返回结果里面的uuid")
    private String operationId;

    /**
     * 指令执行结果（1成功  0失败）
     * 在通断电的时候，下发密码等三个场景会推送
     */
    @Schema(description = "指令执行结果")
    private String isSuccess;

    /**
     * 用户id
     * 下发密码时指定的用户
     */
    @Schema(description = "用户id")
    private String userId;

    /**
     * userName
     * 下发密码时指定的用户
     */
    @Schema(description = "下发密码时指定的用户")
    private String userName;

    /**
     * 警告类型（银通答复 ： 需关注，展示接口提供数据即可(根据设备不同会有不同的告警类型，接入新设备会产生新的告警类型)。
     * 键盘锁定产生的原因，是因为多次密码输入错误导致，一段时间后会自动解锁。如针对告警记录没有额外业务，仅展示接口提供数据即可。）
     * 水滴不用关注该字段
     */
    @Schema(description = "警告类型")
    private String warningType;

    /**
     * 密码
     */
    @Schema(description = "密码")
    private String pwd;
}
